function foo(a) {
	//在这个范围里有b、bar、c属于这个作用域，无论定义在什么位置，外部没有办法访问到
	var b = 2;
	// some code
	function bar() {
		// ...
	}
	// more code
	var c = 3;
}
foo(10);


/* 
	将代码通过函数的方式隐藏起来
*/
function doSomeThing(a) {
	function doSomeThingElse(a) {
		return a - 1;
	}
	var b;
	b = a + doSomeThingElse(a);
	console.log(b * 3);
}
doSomeThing(3);

/* 
使用不带名字的函数限定作用域，保护全局作用域
*/
var b=20;
(function () { 
	var b=10;
	console.log("in the function:"+b);
})();
console.log(b);


//catch中是一个块作用域
try {
	undefined(); // illegal operation to force an exception!
}
catch (err) {
	console.log( err ); // works!
}
// console.log( err ); // ReferenceError: `err` not found



//let 关键字是将变量声明在最近的块中，(也就是最小的{}中)
{
	let valueInlet=1;
}
// console.log(valueInlet);//将会报错
